| @@ -0,0 +1,3 @@ | ||
| 1 | +{ | |
| 2 | + "python.formatting.provider": "none" | |
| 3 | +} | 
| @@ -233,6 +233,8 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin): | ||
| 233 | 233 |  | 
| 234 | 234 |          return { | 
| 235 | 235 | 'has_unionid': bool(self.unionid), | 
| 236 | + 'unionid': self.unionid, | |
| 237 | + 'openid': self.openid, | |
| 236 | 238 | 'user_id': self.user_id, | 
| 237 | 239 | 'name': self.name, | 
| 238 | 240 | 'username': self.username, | 
| @@ -0,0 +1,75 @@ | ||
| 1 | +# -*- coding: utf-8 -*- | |
| 2 | + | |
| 3 | +from __future__ import division | |
| 4 | + | |
| 5 | +from django.conf import settings | |
| 6 | +from django.db import transaction | |
| 7 | +from django_logit import logit | |
| 8 | +from django_response import response | |
| 9 | +from paginator import pagination | |
| 10 | + | |
| 11 | +from mch.models import BrandInfo, DistributorInfo, SaleclerkInfo | |
| 12 | +from utils.error.errno_utils import ProductDistributorStatusCode, SaleclerkStatusCode | |
| 13 | + | |
| 14 | + | |
| 15 | +@logit | |
| 16 | +def distributor_list(request): | |
| 17 | +    page = request.POST.get('page', 1) | |
| 18 | +    num = request.POST.get('num', 20) | |
| 19 | + | |
| 20 | +    distributors = DistributorInfo.objects.filter(status=True).order_by('distributor_name') | |
| 21 | + count = distributors.count() | |
| 22 | + distributors, left = pagination(distributors, page, num) | |
| 23 | + distributors = [distributor.admindata for distributor in distributors] | |
| 24 | + | |
| 25 | +    return response(200, 'Get Distributor List Success', u'获取经销商列表成功', { | |
| 26 | + 'distributors': distributors, | |
| 27 | + 'count': count, | |
| 28 | + 'left': left, | |
| 29 | + }) | |
| 30 | + | |
| 31 | +@logit | |
| 32 | +def salesman_detail(request): | |
| 33 | +  user_id = request.POST.get('user_id', '') | |
| 34 | + | |
| 35 | + try: | |
| 36 | + salesman = SaleclerkInfo.objects.get(user_id=user_id, status=True) | |
| 37 | + except SaleclerkInfo.DoesNotExist: | |
| 38 | + return response(SaleclerkStatusCode.CLERK_NOT_FOUND) | |
| 39 | + | |
| 40 | + return response(200, 'Get Salesman Detail Success', u'获取销售员信息成功', data=salesman.data) | |
| 41 | + | |
| 42 | + | |
| 43 | +@logit | |
| 44 | +@transaction.atomic | |
| 45 | +def salesman_register(request): | |
| 46 | + """ 店员授权信息提交 """ | |
| 47 | +    user_id = request.POST.get('user_id', '') | |
| 48 | +    brand_id = request.POST.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID | |
| 49 | +    distributor_id = request.POST.get('distributor_id', '') | |
| 50 | +    unionid = request.POST.get('unionid', '') | |
| 51 | +    openid = request.POST.get('openid', '') | |
| 52 | +    phone = request.POST.get('phone', '') | |
| 53 | + | |
| 54 | + if SaleclerkInfo.objects.filter(clerk_phone=phone).exclude(unionid=unionid).exists(): | |
| 55 | + return response(SaleclerkStatusCode.CLERK_PHONE_ALREADY_EXISTS) | |
| 56 | + | |
| 57 | + try: | |
| 58 | + distributor = DistributorInfo.objects.get(distributor_id=distributor_id) | |
| 59 | + except DistributorInfo.DoesNotExist: | |
| 60 | + return response(ProductDistributorStatusCode.DISTRIBUTOR_NOT_FOUND) | |
| 61 | + | |
| 62 | +    fields = { | |
| 63 | + 'distributor_id': distributor_id, | |
| 64 | + 'user_id': user_id, | |
| 65 | + 'distributor_name': distributor.distributor_name, | |
| 66 | +        'clerk_name': request.POST.get('name', ''), | |
| 67 | +        'clerk_sex': int(request.POST.get('sex', 1)), | |
| 68 | + 'clerk_phone': phone, | |
| 69 | + 'openid': openid, | |
| 70 | + 'user_status': SaleclerkInfo.UNVERIFIED, | |
| 71 | + } | |
| 72 | + | |
| 73 | + clerk, _ = SaleclerkInfo.objects.update_or_create(brand_id=brand_id, unionid=unionid, defaults=fields) | |
| 74 | + | |
| 75 | +    return response(200, 'Submit Success', u'提交成功', {}) | 
| @@ -6,7 +6,7 @@ from django_file_upload import views as file_views | ||
| 6 | 6 | from api import (admin_views, clerk_views, complement_views, distributor_views, encrypt_views, express_views, log_views, | 
| 7 | 7 | maintenance_point_views, maintenance_views, mch_views, member_views, model_views, operator_views, | 
| 8 | 8 | refresh_views, sr_views, staff_views, tenancy_admin_views, tenancy_views, tencentcloud_views, wx_views, | 
| 9 | - wxa_views, consumer_admin_view) | |
| 9 | + wxa_views, consumer_admin_view, salesman_mp_views) | |
| 10 | 10 | from miniapp import qy_views | 
| 11 | 11 | from miniapp import views as mini_views | 
| 12 | 12 | from page import oauth_views, sale_views, screen_views | 
| @@ -277,6 +277,13 @@ urlpatterns += [ | ||
| 277 | 277 | url(r'^admin/complement/code/contacted$', admin_views.complement_code_contacted, name='complement_code_contacted'), | 
| 278 | 278 | ] | 
| 279 | 279 |  | 
| 280 | +#销售员 | |
| 281 | +urlpatterns += [ | |
| 282 | + url(r'^mp/distributor/list$', salesman_mp_views.distributor_list, name='mp_distributor_list'), | |
| 283 | + url(r'^mp/salesman/register$', salesman_mp_views.salesman_register, name='mp_salesman_register'), | |
| 284 | + url(r'^mp/salesman/detail$', salesman_mp_views.salesman_detail, name='mp_salesman_detail'), | |
| 285 | +] | |
| 286 | + | |
| 280 | 287 | # 维修点 | 
| 281 | 288 | urlpatterns += [ | 
| 282 | 289 | url(r'^maintenance/point/add$', maintenance_point_views.maintenance_point_add, name='maintenance_point_add'), |